#include <iostream>
using namespace std;
#define MaxSize 10
// 顺序表
typedef struct
{
  int data[MaxSize];
  int length;
} SqList;
// 初始化
void InitList(SqList &L)
{
  for (int i = 0; i < MaxSize; i++)
  {
    /* code */
    L.data[i] = 0;
  }
  L.length = 0;
}
// 在第 i 个位置插入元素
bool ListInsert(SqList &L, int i, int e)
{
  // 保证 i 的合法
  if (i < 1 || i > L.length + 1)
  {
    return false;
  }
  // 保证 length 的合法
  if (L.length >= MaxSize)
  {
    return false;
  }
  for (int j = i; j <= L.length; j++)
  {
    /* code */
    L.data[j] = L.data[j - 1];
  }
  L.data[i - 1] = e;
  L.length++;
  return true;
}
// 在第 i 个位置删除元素
bool ListDelete(SqList &L, int i, int &e)
{
  // 保证 i 的合法
  if (i < 1 || i > L.length)
  {
    return false;
  }
  e = L.data[i - 1];
  for (int j = i; j < L.length; j++)
  {
    L.data[j - 1] = L.data[j];
  }
  L.length--;
  return true;
}
// 遍历
void ListTraverse(SqList L)
{
  for (int i = 0; i < L.length; i++)
  {

    /* code */
    cout << L.data[i] << " ";
  }
  cout << endl;
}

int main()
{
  int e;
  SqList L;
  InitList(L);
  ListInsert(L, 1, 1);
  ListInsert(L, 2, 2);
  ListInsert(L, 3, 3);
  ListDelete(L, 1, e);
  cout << "删除的元素是：" << e << endl;
  ListTraverse(L);
  return 0;
}